
#include "key_manager.h"
#include "sys.h"

static void InitKeyIo(void)
{ 
 	GPIO_InitTypeDef GPIO_InitStructure;
 
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);//使能PORTA,PORTE时钟

	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_3|GPIO_Pin_4;//KEY0-KEY1
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
 	GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化GPIOE2,3,4

	//初始化 WK_UP-->GPIOA.0	  下拉输入
	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0设置成输入，默认下拉	  
	GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA.0
}

cotKeyState_e ReadKey0(void)
{
	return (cotKeyState_e)!GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4);//读取按键
}

cotKeyState_e ReadKey1(void)
{
    return (cotKeyState_e)!GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3);//读取按键
}

cotKeyState_e ReadKeyUp(void)
{
    return (cotKeyState_e)GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0);//读取按键
}

void FML_KEY_Init(void)
{
    static cotKeyCfg_t s_keyTable[KEY_MAX_NUM] = {
        {.pfnKeyState = ReadKey0},
        {.pfnKeyState = ReadKey1},
        {.pfnKeyState = ReadKeyUp},
    };

    InitKeyIo();
    cotKey_Init(s_keyTable, KEY_MAX_NUM);
}
